package server

import (
	"ChatServerDemo/protocol"
	"ChatServerDemo/server/utils"
	"encoding/json"
	"net"
)

func (slf *ChatServer) handleJoinChannel(conn net.Conn, msg string) {

	packet := protocol.JoinChannel{}
	err := json.Unmarshal([]byte(msg), &packet)
	if err != nil {
		utils.Log("UnKownPack[%s] err:%+v", string(msg), err)
		return
	}

	c, exist := slf.ChanMap[packet.Channel]
	if !exist {
		slf.ChanMap[packet.Channel] = NewChannel(packet.Channel)
		c = slf.ChanMap[packet.Channel]
	}
	c.Join(conn, packet.Nick)
}

func (slf *ChatServer) handleSendMsg(msg string) {

	packet := protocol.SendMsg{}
	err := json.Unmarshal([]byte(msg), &packet)
	if err != nil {
		utils.Log("UnKownPack[%s] err:%+v", string(msg), err)
		return
	}
	c, exist := slf.ChanMap[packet.Channel]
	if exist {
		c.SendMsg(msg)
	}
}

func (slf *ChatServer) handleQuit(msg string) {

	packet := protocol.Quit{}
	err := json.Unmarshal([]byte(msg), &packet)
	if err != nil {
		utils.Log("UnKownPack[%s] err:%+v", string(msg), err)
		return
	}
	c, exist := slf.ChanMap[packet.Channel]
	if exist {
		c.Kick(packet.Nick)
	}
}